#ifndef EPOLLER_H
#define EPOLLER_H

#include <sys/epoll.h>
#include <vector>
#include <assert.h>
#include <unistd.h>

class Epoller {
public:
    explicit Epoller(int maxEvent = 1024);

    ~Epoller();

    bool AddFd(int fd, uint32_t events);

    bool ModFd(int fd, uint32_t events);

    bool DelFd(int fd);

    int Wait(int timeoutMS = -1); // -1默认阻塞, 返回事件数

    int GetEventFd(size_t i) const; // 获得描述符

    uint32_t GetEvents(size_t i) const; // 获得事件类型

private:
    int m_epollFd; // epoll描述符

    std::vector<struct epoll_event> m_events; // 用于获取发生epoll事件

};


#endif